package simulacao.modelo.pistas;

import javafx.scene.paint.Color;
import javafx.scene.shape.SVGPath;
import javafx.animation.transition.AnimationPath;
import javafx.scene.Node;
import javafx.scene.Group;

public class PistaSemiOval extends Pista {

    def faixaExterna = SVGPath {
        content : "M 383.85677,94.515177 L 794.89034,94.515177 C 882.81274,101.01518 969.14071,195.67909 967.13297,321.28881 C 965.13297,445.91458 899.31274,530.56244 799.89034,547.06244 L 383.85677,546.56244 C 290.93435,540.56244 211.61413,445.41458 211.61413,319.78881 C 211.61413,194.16305 292.93435,102.01518 383.85677,94.515177 z"
        strokeWidth : larguraFaixaDeRodagem
        stroke : corAsfalto
        fill : Color {opacity : 0}
        translateX: deslocamentoX
        translateY: deslocamentoY
    };

    def faixaInterna = SVGPath {
        content : "M 404.73043,132.43027 L 774.69243,132.43027 C 864.07998,126.93027 929.7241,216.67305 929.7241,321.30266 C 929.7241,425.93229 864.07998,516.17502 774.69243,510.17502 L 404.73043,510.17502 C 315.34288,515.67502 249.69874,425.93229 249.69874,321.30266 C 249.69874,216.67305 316.84288,126.43027 404.73043,132.43027 z"
        strokeWidth : larguraFaixaDeRodagem
        stroke : corAsfalto
        fill : Color {opacity : 0}
        translateX: deslocamentoX
        translateY: deslocamentoY
    };

    def linhaCentral = SVGPath {
        content : "M 394.40582,113.43028 L 785.0483,113.43028 C 875.73686,113.43028 948.74608,206.12174 948.74608,321.24462 C 948.74608,436.36751 875.73686,529.05894 785.0483,529.05894 L 394.40582,529.05894 C 303.71724,529.05894 230.70802,436.36751 230.70802,321.24462 C 230.70802,206.12174 303.71724,113.43028 394.40582,113.43028 z"
        stroke : corLinhaCentral
        strokeWidth : larguraLinhaCentral
        strokeDashArray : [ 20, 15 ]
        fill : Color {opacity : 0};
        translateX: deslocamentoX
        translateY: deslocamentoY
    }

    def backGroudLinhaCentral = SVGPath {
        content : linhaCentral.content
        stroke : corAsfalto
        strokeWidth : 20
        fill : Color {opacity : 0};
        translateX: deslocamentoX
        translateY: deslocamentoY
    }

    def regiaoElevacaoLocal = RegiaoElevacao {
                altura: larguraFaixaDeRodagem * 2
                largura: 300
                deslocamentoX: deslocamentoX + 450
                deslocamentoY: deslocamentoY + larguraFaixaDeRodagem * 2
    }

    init {

        super.regiaoElevacao = regiaoElevacaoLocal;
        QUANTIDADE_DE_FAIXAS = 2;
        
        faixasDeRodagemAnimadas = [
            AnimationPath.createFromPath(faixaExterna),
            AnimationPath.createFromPath(faixaInterna)
        ];

    }

    public override function create(): Node{
        return Group {
                    content: [
                            backGroudLinhaCentral,
                            faixaExterna,
                            faixaInterna,
                            regiaoElevacaoLocal,
                            linhaCentral
                    ]
                }
        }
}
